package com.zipking.cloud.springbootmybatis.current;

import com.google.common.collect.Maps;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class ConcurrentHashMapDemo {
    // 创建一个 ConcurrentHashMap 实例
    private final ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();

    // 将一个键值对插入到 Map 中
    public void put(String key, Integer value) {
        // put 方法是线程安全的
        map.put(key, value);
    }

    // 从 Map 中获取与指定键关联的值
    public Integer get(String key) {
        // get 方法是线程安全的
        return map.get(key);
    }

    // 计算 Map 中的元素数量
    public int size() {
        // size 方法是线程安全的
        return map.size();
    }

    // 演示删除操作
    public void remove(String key) {
        // remove 方法是线程安全的
        map.remove(key);
    }

    // 演示如何批量添加数据
    public void addAll(Map<String, Integer> newData) {
        // putAll 方法是线程安全的
        map.putAll(newData);
    }

    public static void main(String[] args) {
        ConcurrentHashMapDemo demo = new ConcurrentHashMapDemo();

        // 批量添加数据
       // demo.addAll(Maps.("key1", 1, "key2", 2, "key3", 3));

        // 单独添加一条数据
        demo.put("key4", 4);

        // 获取并打印一条数据
        System.out.println("Value for 'key1': " + demo.get("key1"));

        // 获取 Map 的大小
        System.out.println("Map size: " + demo.size());

        // 删除一条数据
        demo.remove("key2");

        // 再次获取 Map 的大小
        System.out.println("Map size after removal: " + demo.size());
    }
}

